<?php
// 任务表相关操作
if (!class_exists('MABOU_Admin_Interface_Task')) {
    class MABOU_Admin_Interface_Task extends MABOU_Admin_Interface
    {
        //运行
        public static function run()
        {
            // 增 - 设备变更信息接口
            add_action('wp_ajax_add_task_table',  array(__CLASS__, 'add_task_table'));
            //TODO:有没有不需要下面这行的方法
            add_action('wp_ajax_nopriv_add_task_table',  array(__CLASS__, 'add_task_table')); //允许未登录用户访问
        }


        //添加任务表接口
        public static function add_task_table()
        {
            global $wpdb;
            $table_name = $wpdb->prefix . self::$table_task_name;

            // 获取前端传递的参数并进行输入验证，如果有值，肯定是字符串类型
            $title = isset($_POST['title']) ? sanitize_text_field($_POST['title']) : null; //任务标题
            $type = isset($_POST['type']) ? sanitize_text_field($_POST['type']) : null; //任务类型
            $reward = isset($_POST['reward']) ? sanitize_text_field($_POST['reward']) : null; //奖励额度
            $task_time = isset($_POST['task_time']) ? sanitize_text_field($_POST['task_time']) : null; //开始和结束时间
            $source = isset($_POST['source']) ? $_POST['source'] : null; //备注内容

            //JSON格式 双重转义
            $source = json_decode(stripslashes($source), true);
            if (!$source) {
                return wp_send_json_error(['error' => 'JSON 格式错误'], 400);
            }

            //user 使用当前登录的用户名
            //自动增加唯一ID

            //是否缺少参数
            // 需要检查的变量
            $variables = compact('title',  'type', 'reward', 'task_time', 'source',);

            // 检查是否有参数为 null
            $null_param = array_search(null, $variables, true);

            // 如果有参数为 null，则返回相应的错误消息
            if ($null_param !== false) {
                $param_names = [
                    'title' => 'title - 缺少任务标题',
                    'type' => 'type - 任务类型',
                    'reward' => 'reward - 奖励额度',
                    'task_time' => 'task_time - 任务时间段',
                    'source' => 'source - 任务内容'
                ];
                return wp_send_json_error(['error' => '缺少参数：' . $param_names[$null_param]], 400);
            }

            // 在插入数据库之前，将 source 数据转换为 JSON 格式的字符串
            $source = json_encode($source);

            // 使用预处理语句插入数据
            $result = $wpdb->insert(
                $table_name,
                array(
                    'title' => $title,
                    'type' => $type,
                    'reward' => $reward,
                    'task_time' => $task_time,
                    'source' => $source
                ),
                array(
                    '%s', // title
                    '%s', // type
                    '%s', // reward
                    '%s', // task_time
                    '%s', // source
                )
            );

            // 检查插入是否成功
            if ($result === false) {
                $data = json_decode(stripslashes($source), true);
                return wp_send_json_error(
                    [
                        'error' => '插入变更数据失败，可能是字数太多',
                        'reason' => $wpdb->last_error,
                        'msg' => $data,
                        'msg1' => stripslashes($source),

                    ],
                    500
                );
            }
            return wp_send_json_success(['message' => '插入变更数据成功']);
            // 插入成功，可以进行其他操作
            wp_die();
        }
        //删除任务表接口
        public static function del_task_table() {}
        //修改任务表接口
        public static function edit_task_table() {}
        //获取任务表接口
        public static function get_task_table() {}
    }
}
